namespace lucere.index
{
    public enum FileFormat
    {
        /// <summary>
        /// The file format version, a negative number. 
        /// Works since counter, the old 1st entry, is always >= 0 
        /// </summary>
        Default = -1,

        /// <summary>
        /// This format adds details used for lockless commits.  It differs
        /// slightly from the previous format in that file names
        /// are never re-used (write once).  Instead, each file is
        /// written to the next generation.  For example,
        /// segments_1, segments_2, etc.  This allows us to not use
        /// a commit lock.  See <a href="http://lucene.apache.org/java/docs/fileformats.html">file formats</a> 
        /// for details.
        /// </summary>
        Lockless = -2,

        /// <summary>
        /// This format adds a "hasSingleNormFile" flag into each segment info.
        /// See <a href="http://issues.apache.org/jira/browse/LUCENE-756">LUCENE-756</a>
        /// for details.
        /// </summary>  
        SingleNormFile = -3,
        
        /// <summary> 
        /// This format allows multiple segments to share a single
        /// vectors and stored fields file. 
        /// </summary>
        SharedDocumentStore = -4,

        /// <summary>
        /// This format adds a checksum at the end of the file to
        /// ensure all bytes were successfully written. 
        /// </summary>
        CheckSum = -5,

        /// <summary>
        /// This format adds the deletion count for each segment.
        /// This way IndexWriter can efficiently report numDocs().
        /// </summary>
        DeletionCount = -6,

        /// <summary>
        /// This format adds the boolean hasProx to record if any
        /// fields in the segment store prox information (ie, have
        /// omitTermFreqAndPositions==false) 
        /// </summary>
        HasProximityData = -7,

        /// <summary>
        /// This format adds optional commit userData (String) storage.
        /// </summary>
        UserData = -8,

        /// <summary>
        /// This format adds optional per-segment String
        /// diagnostics storage, and switches userData to Map 
        /// </summary>
        Diagnostics = -9,

        /// <summary>
        /// This must always point to the most recent file format. 
        /// </summary>
        CurrentFormat = Diagnostics
    }
}